package com.zhl.polymorphism2;

public class Test {
    public static void main(String[] args) {
        //目标：多态的好处
        //好处1：可以实现解耦合的 ， 右边对象可以随时切换 ，后续业务随之改变.
        People p1 = new Teacher();
        p1.eat();

        //强制类型转换   这里使用instanceof关键字判断对象是否为某种类型,然后再进行强转.
        if(p1 instanceof Teacher){
            Teacher t = (Teacher) p1;
            t.teach();
        }else{
            System.out.println("不是老师");
        }

        //强制类型转换
        Teacher t1 = (Teacher) p1;
        t1.teach();//就可以使用自己独有的方法

        Teacher t = new Teacher();
        go(t);
        Student s = new Student();
        go(s);



    }
    //好处2:可以使用父类类型的变量作为形参,可以接收一切子类对象.
    public static void go(People p){
        //go方法里,如果使用Teacher t ; 或 Student s; 则只能接收Teacher或Student对象,不能同时被接收,且父类也不能被接收
        //可是如果 使用 People p; 则可以接收Teacher或Student对象,且父类People也能被接收.
    }



}
